perm filename SAILIO.SAI[PNT,HE] blob
sn#368773 filedate 1978-07-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00006 00003 ! aliasppn, loginppn
C00007 00004 ! login
C00009 ENDMK
C⊗;
ENTRY;
BEGIN "SAILIO"
DEFINE ! = "COMMENT";
INTERNAL INTEGER PROCEDURE UGETF(INTEGER CHAN);
BEGIN
! EXTENDS THE FILE OPEN ON CHANNEL CHAN;
define UGETF = '073000;
INTEGER I,CHN; LABEL DOUGTF;
CHN←CHAN;
quick_code;
move '13,CHN;
lsh '13,5;
addi '13,UGETF;
hrlm '13,DOUGTF; ! PREPARE UGETF;
DOUGTF:
I ;
end;
RETURN(I);
END;
! get current record number;
INTERNAL INTEGER PROCEDURE UGET(INTEGER CHAN);
BEGIN
define MTAPE = '072000;
LABEL ADR,ADR1,DOMTPE; INTEGER CHN;
INTEGER GMOD; GMOD←CVSIX("GODMOD");
CHN←CHAN;
quick_code;
move '13,GMOD;
movem '13,ADR;
setzm '13,adr1;
move '13,CHN;
lsh '13,5;
addi '13,MTAPE;
hrlm '13,DOMTPE;
jrst DOMTPE ;
ADR:
0 ; ! '475744555744; ! SIXBIT /GODMOD/;
ADR1: 0 ;
DOMTPE:
ADR ;
move '13,ADR1;
movem '13,CHN;
end;
RETURN(CHN);
END;
INTERNAL INTEGER PROCEDURE FLOOKUP(INTEGER CHAN; STRING FILE);
BEGIN
INTEGER FLAG; STRING ERRMESS;
LOOKUP(CHAN,FILE,FLAG);
IF FLAG THEN
BEGIN
CASE FLAG←FLAG MOD 8 OF
BEGIN
[0] ERRMESS←"No such file";
[1] ERRMESS←"Illegal PPN";
[2] ERRMESS←"Protection violation";
[3] ERRMESS←"File is busy, currently in Read-Alter Mode";
[5] ERRMESS←"File was already opened for output on another channel";
ELSE ERRMESS←"This error no"&cvs(flag mod 8)&" should not happen"
END;
OUTSTR(CRLF&ERRMESS);
END;
RETURN(FLAG);
END;
INTERNAL INTEGER PROCEDURE FENTER(INTEGER CHAN; STRING FILE);
BEGIN
INTEGER FLAG; STRING ERRMESS;
ENTER(CHAN,FILE,FLAG);
IF FLAG THEN
BEGIN
CASE FLAG←FLAG MOD 8 OF
BEGIN
[0] ERRMESS←"Null filename given for write file";
[1] ERRMESS←"Illegal PPN given";
[2] ERRMESS←"Trying to write on a write protected file";
[3] ERRMESS←"File is currently being used";
[6] ERRMESS←"Different filename specified for ENTER and LOOPKUP";
ELSE ERRMESS←"Error number"&cvs(flag)&" shouldnt have occurred"
END;
OUTSTR(CRLF&ERRMESS);
END;
RETURN(FLAG);
END;
INTERNAL INTEGER PROCEDURE FLENTER(INTEGER CHAN; STRING FILE);
BEGIN
INTEGER FLAG;
IF FLAG←FLOOKUP(CHAN,FILE) THEN RETURN(FLAG);
FLAG←FENTER(CHAN,FILE); RETURN(FLAG);
END;
! aliasppn, loginppn;
SIMPLE STRING PROCEDURE ALIASPPN;
RETURN(CVXSTR(CALL(0,"DSKPPN")));
SIMPLE STRING PROCEDURE LOGINPPN;
RETURN(CVXSTR(CALL(0,"GETPPN")));
! login;
EXTERNAL INTEGER _SKIP_;
SIMPLE INTEGER PROCEDURE LOGIN(STRING PPN(NULL));
BEGIN
STRING S;
INTEGER PTYLINE;
PTYLINE←PTYGET;
ptyline←ptyget;
if _skip_=0 then outstr("couldn't get pty");
ptostr(PTYLINE,"L "&PPN&CRLF);
S←PTYSTR(PTYLINE,"↑");
S←PTYSTR(PTYLINE,".");
RETURN(PTYLINE);
END;
PROCEDURE MONCOM(INTEGER PTYLINE; STRING COMMAND);
BEGIN
STRING S;
PTOSTR(PTYLINE,COMMAND&CRLF);
S←PTYSTR(PTYLINE,"↑");
S←PTYSTR(PTYLINE,".");
END;
PROCEDURE LOGOUT(INTEGER PTYLINE);
PTYREL(PTYLINE);
PROCEDURE MONITOR(STRING COMMAND,PPN(NULL));
BEGIN
INTEGER PTY;
PTY←LOGIN(PPN);
MONCOM(PTY,COMMAND);
LOGOUT(PTY);
END;
END "SAILIO";